import os
import shutil

def merge_drawable_resources():
    current_dir = os.getcwd()
    res_dir = os.path.join(current_dir, 'res')
    
    target_xhdpi = os.path.join(current_dir, 'xhdpi')
    target_xxhdpi = os.path.join(current_dir, 'xxhdpi')
    os.makedirs(target_xhdpi, exist_ok=True)
    os.makedirs(target_xxhdpi, exist_ok=True)
    
    print('开始处理图片...')

    # 先处理 res 目录下的 xhdpi 和 xxhdpi 子目录
    print('开始提取 res/xhdpi 和 res/xxhdpi 子目录 中的图片到 res/xhdpi 和 res/xxhdpi 中...')
    for dpi in ['xhdpi', 'xxhdpi']:
        dpi_dir = os.path.join(res_dir, dpi)
        if os.path.exists(dpi_dir):
            # 先提取所有子目录中的文件
            for root, dirs, files in os.walk(dpi_dir):
                if root != dpi_dir:  # 只处理子目录中的文件
                    for file in files:
                        if file.endswith('.png'):
                            source_file = os.path.join(root, file)
                            target_file = os.path.join(dpi_dir, os.path.basename(file))
                            try:
                                shutil.copy2(source_file, target_file)
                                print(f'已提取: {source_file} -> {target_file}')
                                # 复制成功后删除源文件
                                os.remove(source_file)
                                print(f'已删除源文件: {source_file}')
                            except Exception as e:
                                print(f'操作失败: {source_file}')
                                print(f'错误信息: {str(e)}')
            
            # 删除所有子目录
            for item in os.listdir(dpi_dir):
                item_path = os.path.join(dpi_dir, item)
                if os.path.isdir(item_path):
                    try:
                        shutil.rmtree(item_path)
                        print(f'已删除目录: {item_path}')
                    except Exception as e:
                        print(f'删除目录失败: {item_path}')
                        print(f'错误信息: {str(e)}')

    print('开始合并图片...')
    # 复制文件
    for root, dirs, files in os.walk(res_dir):
        current_dir_name = os.path.basename(root)
        if current_dir_name == 'xhdpi':
            target_dir = target_xhdpi
        elif current_dir_name == 'xxhdpi':
            target_dir = target_xxhdpi
        else:
            continue
            
        # 遍历当前目录及其所有子目录
        for sub_root, sub_dirs, sub_files in os.walk(root):
            for file in sub_files:
                if file.endswith('.png'):
                    source_file = os.path.join(sub_root, file)
                    target_file = os.path.join(target_dir, os.path.basename(file))
                    
                    source_parent_dir = os.path.basename(os.path.dirname(source_file))
                    if (source_parent_dir == 'xhdpi' and target_dir == target_xhdpi) or \
                       (source_parent_dir == 'xxhdpi' and target_dir == target_xxhdpi):
                        try:
                            shutil.copy2(source_file, target_file)
                            print(f'已复制: {source_file} -> {target_file}')
                        except Exception as e:
                            print(f'操作失败: {source_file}')
                            print(f'错误信息: {str(e)}')
    
    # 删除res目录下所有文件和子目录但保留res目录本身
    print('\n开始清理res目录...')
    for root, dirs, files in os.walk(res_dir):
        # 删除所有文件
        for file in files:
            file_path = os.path.join(root, file)
            try:
                os.remove(file_path)
                print(f'已删除文件: {file_path}')
            except Exception as e:
                print(f'删除文件失败: {file_path}')
                print(f'错误信息: {str(e)}')
        
        # 删除所有子目录（除了res_dir本身）
        if root != res_dir:
            try:
                shutil.rmtree(root)
                print(f'已删除目录: {root}')
            except Exception as e:
                print(f'删除目录失败: {root}')
                print(f'错误信息: {str(e)}')
    
    print('清理完成！')
    print('合并完成！')

if __name__ == '__main__':
    merge_drawable_resources()
    print('所有操作完成！')